2021-07-02 Homematic IP Node-RED Doppelklick
Mit einer Taste bis zu vier unterschiedliche Befehle senden.
Für meine Hausautomatisation verwende ich eine
⎇Homematic IP CCU3 und programmiere diese mit
⎇Node-RED bzw.
⎇RedMatic.
Wie vermutlich bekannt, verfügen Tasten bei Homematic, egal ob bei
Fernbedienungen oder Wandschaltern, über standardmäßig zwei
Berichtmöglichkeiten. Sie melden entweder einen kurzen Tastendruck oder, bei
Überschreitung eines in Millisekunden einstellbaren Schwellwerts, langen
Tastendruck. In Node-RED gibt es dazu die entsprechenden Datenpunkte
PRESS_SHORT und PRESS_LONG. Damit kann man, auf einfache Weise, zwei Funktionen
mit nur einer Taste steuern.
Mit dieser Node-RED Funktion werden es vier.
Download: Doppelklick.json
Wie im Debug-Fenster zu sehen, bleiben die Datenpunkte und Topics zu PRESS_SHORT
und PRESS_LONG erhalten, so das vorhandener Code nicht angepasst werden muss.
Dazu kommen die Datenpunkte PRESS_SHORT_DOUBLE und PRESS_LONG_DOUBLE, welche
entsprechend durch einen Doppelklick ausgelöst werden. Der Funktionseingang
kann mit beliebig vielen Tasten belegt werden.
Zur Erkennung eines Doppelklicks muss nach dem ersten Klick, ein einstellbares
Zeitfenster lang, auf den potentiellen zweiten Klick, gewartet werden. Siehe
shortTime und longTime im Quelltext von Click. (In Delay oder Clicks muss
nichts eingestellt werden.) Zwar kann jeder wie er will mit kleineren
Werten experimentieren, doch steckt in den Standardwerten eine gewisse
Erfahrung. (500ms für einen kurzen Doppelklick. 2s für einen langen. Das
bekommt man auch im Halbschlaf hin.) Zweitklicks unter ~120ms werden von der
Hardware verschluckt.
Für die Tasten gelten folgende Homematic-Einstellungen als Empfehlung:
Doppelklick-Zeit (Tastensperre) = 0.0
Mindestdauer für langen Tastendruck = 0.4
Timeout für langen Tastendruck = 100ms
Mit den Variablen shortDouble und longDouble stellt man ein, ob man für einen
kurzen oder langen Klick überhaupt die Doppelklickfunktion haben möchte.
Abgeschaltet, entfällt natürlich die eben genannte Verzögerung.
Manche Geräte senden beim loslassen eines langen Tastendrucks das PRESS_LONG Signal erneut. (Sie senden sogar wiederholt das Signal, solange die Taste gehalten wird, bis der "Timeout für langen Tastendruck" überschritten wird. Deswegen die Empfehlung, diesen Wert auf 100ms zu setzten.) Bei Geräten die sich so verhalten, muss die Variable hasBounce auf true gestellt werden! Ich habe das bisher aber nur bei der
⎇HmIP-RC8 Fernbedienung festgestellt.
Wie ich Dinge zum Beispiel damit steuere:
Beschattung:
var shortDouble = true;
var longDouble = true;
PRESS_SHORT: Öffnet Jalousien oder stoppt deren Fahrt.
PRESS_LONG: Schließt Jalousien.
PRESS_SHORT_DOUBLE: Öffnet Jalousien zur Hälfte.
PRESS_LONG_DOUBLE: Öffnet Jalousien nur einen kleinen Spalt.
Beleuchtung:
var shortDouble = true;
var longDouble = false;
PRESS_SHORT: Wohnzimmerlicht ein oder aus.
PRESS_SHORT_DOUBLE: Zwischen zwei Beleuchtungsarten hin und herschalten. (Ob
alle sechs oder nur drei Lichter der Deckenleuchte an sein sollen.)
PRESS_LONG: Zwischen drei Helligkeitsstufen umschalten.
Wohnungstüre:
var shortDouble = false;
var longDouble = true;
PRESS_SHORT: Türe öffnen.
PRESS_LONG: Türe verriegeln.
PRESS_LONG_DOUBLE: Türe entriegeln.
⍈Homepage